/**
 * 1、测试&&与&的区别、||与|的区别
 * 2、将&和|假装时逻辑运算符来使用，但一定要注意它们的返回结果仍然是数字
 * 3、在 JavaScript 中可以将 0 当作 false 来对待，将 非零数字 当作 true 来对待
 */

let a = true , b = false , c = true , d = false ;
console.log( a | b ); // 1
console.log( a | c ); // 1
console.log( b | d ); // 0

console.log( a || b ); // true
console.log( a || c ); // true
console.log( b || d ); // false

console.log( '- - - - - - - - - - - - - - - - - - - - - - - - - - - - -' );

let m = 10 , n = 20  , p = 30 , q = 40 ;
console.log( `m = ${m} , n = ${n} , p = ${p} , q = ${q}`);
// || 属于短路或: 就是 || 之前的表达式为 true 时将不再考察 || 之后的表达式
console.log( ++m < ++n || ++p < ++q ); // true
console.log( `m = ${m} , n = ${n} , p = ${p} , q = ${q}`);

console.log( '- - - - - - - - - - - - - - - - - - - - - - - - - - - - -' );

let s = 10 , t = 20  , h = 30 , k = 40 ;
console.log( `s = ${s} , t = ${t} , h = ${h} , k = ${k}`);
// | 仍然按照位运算符规则来使用，即 | 左右两边的表达式都会求值，然后再执行 按位与运算 
console.log( ++s < ++t | ++h < ++k ); // 1
console.log( `s = ${s} , t = ${t} , h = ${h} , k = ${k}`);

console.log( '- - - - - - - - - - - - - - - - - - - - - - - - - - - - -' );

// 作业:
// 用以上方法来验证 && 和 & 的区别
